package com.lxj.service;

import com.lxj.common.Result;
import com.lxj.domain.SysPermission;
import com.lxj.dto.SysPermissionDto;
import com.lxj.vo.PageInfo;
import com.lxj.vo.TreeNode;

import java.util.List;

/**
 * @author lxj
 * @date 2021/6/18 18:19
 * @Description:权限的服务
 */
public interface PermissionService {
    /**
     * 查询所有的树菜单
     * @return
     */
    List<SysPermission> selectAllSysPermission();

    /**
     * 将一个普通的权限集合转化为一棵树
     * @param allData
     * @return
     */
    List<TreeNode> convertTreeNode(List<SysPermission> allData);

    /**
     * 分页查询树的数据
     * @param dto
     * @return
     */
    List<SysPermission> findByPage(SysPermissionDto dto);

    /**
     * 新增权限
     * @param dto
     * @return
     */
    Result addPermission(SysPermissionDto dto);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    Result batchDelete(Integer[] ids);

    /**
     * 修改权限
     * @param dto
     * @return
     */
    Result updatePermission(SysPermissionDto dto);

    /**
     * 获取当前角色的权限的id集合
     * @param roleId 角色的id
     * @return
     */
    List<Integer> getPermsByRoleId(Integer roleId);

    /**
     * 给角色分配权限
     * @param roleId
     * @param permsIds
     * @return
     */
    void assign(Integer roleId, Integer[] permsIds);

    /**
     * 查询特定类型的权限
     * @param id    用户的id
     * @param types 类型的集合
     * @return
     */
    List<SysPermission> getPermsByUserIdAndType(Integer id, List<Integer> types);
}
